package cn.isjinhao.crws.sql.lexical.token;

/**
 * @Author ISJINHAO
 * @Date 2021/2/20 17:09
 */
public enum TokenType {

    /**
     * Single-character tokens.
     */
    // (
    LEFT_PAREN,
    // )
    RIGHT_PAREN,
    // ,
    COMMA,
    // -
    MINUS,
    // +
    PLUS,
    // /
    SLASH,
    // *
    STAR,

    /**
     * One or two character tokens.
     */
    // !
    BANG,
    // !=
    BANG_EQUAL,
    // =
    EQUAL,
    // >
    GREATER,
    // >=
    GREATER_EQUAL,
    // <
    LESS,
    // <=
    LESS_EQUAL,
    LIKE,
    CONTAINS,

    /**
     * Literals.
     */
    IDENTIFIER, STRING, NUMBER,

    /**
     * END.
     */
    EOF,

    /**
     * KEYWORDS
     */
    AND, ELSE, FALSE, OR, TRUE, END, WHEN, CASE, NULL, AS,
    DISTINCT, FIRST, LAST, CUNION, CMINUS, CINTERSECT, CEXCEPT,
    IS, LIMIT, HAVING,IN, EXISTS, NOT,
    SELECT, FROM, JOIN, LEFT, RIGHT, WHERE, OUTER, ON, GROUP, ORDER, BY, ASC, DESC,
    FLAT, SUM, COUNT, MIN, MAX, AVG,
    DATE_TO_TIMESTAMP, DATE_TO_STR, STR_TO_DATE, STR_TO_TIMESTAMP, TIMESTAMP_TO_DATE, TIMESTAMP_TO_STR, NOW,
    INSERT, INTO, UPDATE, VALUES, SET, DELETE,

    /**
     * PLACEHOLDER
     */
    PLACEHOLDER, IGNORE, DUPLICATE, KEY;
}